/**
 * description：数据类型转换方法集合
 * author：
 * */

export default {
    /*todo 线性结构转为树形结构

     * description:根节点为多个，即多个树集合
     * 步骤一：list转为key(parentId):value[含该parentId的数据集合]。
     * 步骤二：从parentId为null/undefined/''开始，逐渐组成树结构
     * 思路：子组件的parentId对应父组件的id
  * */
    lineConvertToTree(list=[]){
        let rootArr=[],childConvertToKeyValue={};
        list.forEach((item,index)=>{
            if(!item.parentId||item.parentId===''||item.parentId===null||item.parentId===undefined){
                rootArr.push(item);
            }else{
               if(!childConvertToKeyValue.hasOwnProperty(item.parentId)){
                   // childConvertToKeyValue不含有当前属性
                   childConvertToKeyValue[item.parentId]=[];
               }
                childConvertToKeyValue[item.parentId].push(item);
            }
        });
        rootArr.forEach((item,index)=>{
            let currentChildren=[item];
            while(currentChildren.length>0){
                let currentNode=currentChildren.shift();
                currentNode.children=childConvertToKeyValue[item.id]||[];
                currentChildren=[...currentChildren,...currentNode.children];
            }
        });
    }
};
